/* 
    接受三个参数
    第一个  排序的数组 
    第二个  排序的字段 
    第三个  排序方式 倒序desc  正序asc
*/

export default function tableSort (arr, order, orderBy) {
    // 获取需要排序的数据
    let orderField = arr[0][order];
    // 检测是不是汉字 
    let reg = new RegExp("[\\u4E00-\\u9FFF]+","g");
    // 如果是汉字
    if (reg.test(orderField)) {
        if (orderBy == 'desc') {
            return arr.sort((a, b) => {
                return b[order].localeCompare(a[order], 'zh-CN');
            })
        } else {
            return arr.sort((a, b) => {
                return a[order].localeCompare(b[order], 'zh-CN');
            })
        }
    } else {
        let regPos = /^\d+(\.\d+)?$/;
        let regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;
        if (regPos.test(orderField) || regNeg.test(orderField)) {
            if (orderBy == 'desc') {
                return arr.sort((a, b) => {
                    return b[order] - a[order];
                })
            } else {
                return arr.sort((a, b) => {
                    return a[order] - b[order];
                })
            }
        } else if (typeof orderField == 'string') {
            // 判断是不是日期格式
            if (isNaN(orderField) && !isNaN(Date.parse(orderField))) {
                if (orderBy == 'desc') {
                    return arr.sort((a, b) => {
                        return Date.parse(b[order]) - Date.parse(a[order]);
                    })
                } else {
                    return arr.sort((a, b) => {
                        return Date.parse(a[order]) - Date.parse(b[order]);
                    })
                }
            } else {
                if (orderBy == 'desc') {
                    return arr.sort((a, b) => {
                        return b[order].localeCompare(a[order]);
                    })
                } else {
                    return arr.sort((a, b) => {
                        return a[order].localeCompare(b[order]);
                    })
                }
            }
        } else {
            return arr;
        }
    }
}